home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / FAUG / FAUG05.ADF / monofiles / monopoly.bas < prev    next >
BASIC Source File  |  1992-01-03  |  7KB  |  137 lines

  1. 1     GOTO 7900:REM  **** COMPUTER MONOPOLY ****  SOFTWARE COPYRIGHT <c> 1985    by David M. Addison
  2. 20    GOTO 10000:REM **** throw dice ****
  3. 30    RETURN:REM **** key press sound ****
  4. 40    REM **** graphic to build house ****
  5. 41    gshape(133,123), housepic%()
  6. 42    kk%=val(mid$(b$,8,1))-1:note1%=1900:note2%=1000:gosub 40000
  7. 44    gosub 41000:return
  8. 50    FOR u%=1 TO 4:IF d%(u%) < 2 THEN GOTO 58:REM **** SORT DEEDS ****
  9. 51    FOR v%=1 TO d%(u%)-1:FOR w%=1 TO d%(u%)-1:c$=STR$(p#(u%,w%)):b$=STR$(p#(u%,w%+1))
  10. 52    IF MID$(c$,2,2) = "23" OR MID$(c$,2,1) = "4" THEN y%=2-VAL(MID$(c$,2,1)):GOTO 54
  11. 53    y%=VAL(MID$(c$,4,2))
  12. 54    IF MID$(b$,2,2) = "23" OR MID$(b$,2,1) = "4" THEN x%=2-VAL(MID$(b$,2,1)):GOTO 56
  13. 55    x%=VAL(MID$(b$,4,2))
  14. 56    IF y% > x% THEN z#=p#(u%,w%):p#(u%,w%)=p#(u%,w%+1):p#(u%,w%+1)=z#
  15. 57    NEXT w%,v%
  16. 58    NEXT u%:RETURN
  17. 60    REM **** GRAPHIC TO BUILD HOTEL ****
  18. 62    gshape(108,111), hotelpic%()
  19. 64    kk%=5:note1%=5900:note2%=1500:gosub 40000
  20. 66    gosub 41000:return
  21. 70    gosub 36300:return:rem ****  GRAPHIC FOR POLICE  ****
  22. 80    RETURN:REM **** SOUND ****
  23. 90    yy%=126:xx%=215:j%=0:REM **** GRAPHIC FOR TRAIN ****
  24. 91    pena 1:draw (61,146 TO 240,146)
  25. 92    FOR i%=215 TO 61 STEP -1
  26. 93    j%=j%+1:IF j% > 4 THEN j% = 1
  27. 94    ON j% GOTO 95,96,97,98
  28. 95    gshape (i%,yy%),train1%():GOTO 99
  29. 96    gshape (i%,yy%),train2%():GOTO 99
  30. 97    gshape (i%,yy%),train3%():GOTO 99
  31. 98    gshape (i%,yy%),train4%()
  32. 99    SLEEP(50000):NEXT i%:RETURN
  33. 100   RETURN:REM **** SOUND ****
  34. 200   x%=VAL(MID$(b$,4,2)):REM **** FETCH PROPERTY NAME ****
  35. 210   a$=propname$(x%):pena propcolor%(x%):PRINT  a$;:pena maincolor%
  36. 220   RETURN
  37. 299   b$ = propdeed$(z%):RETURN:REM **** FETCH PROPERTY DEED ****
  38. 400   GOSUB 20000:GOSUB 460:REM **** MENU ****
  39. 401   ask MOUSE xx%,yy%,bb%:x% = pixel(xx%,yy%):IF bb%=0 THEN GOTO 401
  40. 402   IF x% = 27 THEN t%=4:GOSUB 20000:GOTO 1219
  41. 403   IF x% = 28 THEN GOTO 5000
  42. 404   IF x% = 29 THEN GOTO 401
  43. 405   if x% = 30 then gosub 3000:gosub 41000:goto 400
  44. 406   if x% = 25 then 410
  45. 409   goto 401
  46. 410   gosub 20000:?:?:? tab (14);"Are you SURE":? tab(12);"you want to QUIT!":gosub 1700
  47. 415   if x$="Y" then scnclr:chdir "/":end
  48. 420   goto 400
  49. 460   pena maincolor%:PRINT "          MENU"
  50. 462   peno 1:pena 25:CIRCLE ((14*8)-3,(9*8)-3),3:PAINT ((14*8)-3,(9*8)-3),0
  51. 464   pena 25:PRINT at(16*8,9*8);"= End"
  52. 466   pena 28:CIRCLE ((14*8)-3,(11*8)-3),3:PAINT ((14*8)-3,(11*8)-3),0
  53. 468   pena 22:PRINT at(16*8,11*8);"= Trade"
  54. 473   pena 30:circle ((14*8)-3,(13*8)-3),3:paint ((14*8)-3,(13*8)-3),0:pena 23:print at(16*8,13*8);"= Info."
  55. 475   pena 27:circle ((14*8)-3,(15*8)-3),3:paint ((14*8)-3,(15*8)-3),0:pena 26:? at(16*8,15*8);"= Play"
  56. 490   pena maincolor%:return
  57. 600   IF d%(t%)=0 THEN GOTO 1020:REM **** COMPUTER TRADE ****
  58. 610   u%=1
  59. 611   if u%=t% then 620
  60. 612   IF d%(u%)=0 THEN 620
  61. 613   v%=1
  62. 614   y%=0:b$=STR$(p#(u%,v%)):FOR w%=1 TO d%(t%):c$=STR$(p#(t%,w%)):IF MID$(b$,2,2)=MID$(c$,2,2) THEN y%=y%+1
  63. 616   NEXT w%:IF VAL(MID$(b$,2,1))=y%+1 AND b$<>"23" THEN 630
  64. 618   v%=v%+1:IF v%<=d%(u%) THEN 614
  65. 620   u%=u%+1:IF u%<4 THEN 611
  66. 621   GOTO 1003
  67. 630   x%=1
  68. 631   y%=0:c$=STR$(p#(t%,x%)):FOR z%=1 TO d%(u%):d$=STR$(p#(u%,z%)):IF MID$(c$,2,2)=MID$(d$,2,2) THEN y%=y%+1
  69. 632   NEXT z%:IF VAL(MID$(c$,2,1))=y%+1 THEN 640
  70. 634   x%=x%+1:IF x%<=d%(t%) THEN 631
  71. 635   GOTO 618
  72. 640   IF MID$(c$,2,2)=MID$(b$,2,2) THEN 634
  73. 650   d$=c$:y%=t%:t%=u%:GOSUB 6000:x%=z%:t%=y%:d$=b$:GOSUB 6000:y%=z%:z%=INT(y%-x%)/2:z%=100*INT(z%/100)
  74. 652   IF c%(t%)-z% < 0 OR c%(u%)+z% < 0 THEN GOTO 1003
  75. 660   w%=0:GOSUB 20000:pena 26:PRINT at (16*8,6*8);"HUMAN!"
  76. 661   w%=w%+1:SLEEP(200500):pena 1:PRINT at(16*8,6*8);"HUMAN!":SLEEP(200500):pena 26:PRINT at(16*8,6*8);"HUMAN!"
  77. 662   IF w% < 6 THEN 661
  78. 663   pena maincolor%:PRINT TAB(8);:GOSUB 4080:PRINT  " just traded ":d$=b$:b$=c$:PRINT TAB(8);:GOSUB 200
  79. 665   c%(t%)=c%(t%)-z%:c%(u%)=c%(u%)+z%
  80. 670   IF z% > 0 THEN PRINT tab(8); "and $";z%
  81. 680   PRINT tab(8); "and got ":b$=d$:? tab(8);:GOSUB 200
  82. 682   PRINT TAB(8);:IF z% < 0 THEN PRINT  "and $";ABS(z%);
  83. 684   PRINT  "from ";:y%=t%:t%=u%:GOSUB 4080:PRINT  "!"
  84. 690   PRINT TAB(8);:GOSUB 4080:PRINT  " has $";c%(u%);".":t%=y%:PRINT TAB(8);:GOSUB 4080:PRINT  " has $";c%(t%);"."
  85. 692   GOSUB 41000:GOSUB 20000:GOTO 5350
  86. 700   RETURN
  87. 1000  GOSUB 2400:IF t%=4 THEN GOTO 1003:REM **** MAIN LOOP ****
  88. 1001  GOTO 600
  89. 1003  IF d%(t%)=0 THEN GOTO 1020
  90. 1006  IF t% > 3 THEN GOTO 1009
  91. 1007  FOR s%=1 TO d%(t%):c$=STR$(p#(t%,s%)):IF mid$(c$,8,1)="0" or len(c$)>8 THEN GOSUB 1500
  92. 1008  NEXT s%
  93. 1009  IF t%=4 THEN GOSUB 1500
  94. 1020  GOSUB 1400:IF l%(t%) = 40 THEN 2900
  95. 1040  q%=0:GOSUB 20:PRINT at(48,80);" ";:GOSUB 4088:PRINT  " rolled ";
  96. 1045  IF d1%+d2%=8 OR d1%+d2%=11 THEN PRINT  "an";d1%+d2%:GOTO 1050
  97. 1046  PRINT  "a";d1%+d2%
  98. 1050  IF d1%<>d2% THEN GOTO 1100
  99. 1060  d3%=d3%+1:d%=d%+1
  100. 1061  if d%=3 then newxx%=40:gosub 31000:l%(t%)=40:?:? tab(8);"Three doubles...";:?:? tab(8);"GO TO JAIL!!":gosub 70:goto 1210
  101. 1100  GOSUB 30000:gosub 2780:gosub 20000:l%(t%)=l%(t%)+d1%+d2%:IF l%(t%) > 39 THEN l%(t%)=l%(t%)-40:GOSUB 4070
  102. 1110  z%=l%(t%):GOSUB 299:GOSUB 4080:PRINT  " landed on ":? tab(8);:GOSUB 200:PRINT  ".":GOSUB 80:GOSUB 700
  103. 1111  if mid$(b$,2,3)="502" then 47000
  104. 1112  IF MID$(b$,2,2)="60" THEN 3100
  105. 1113  IF MID$(b$,2,2)="70" THEN 4220
  106. 1114  IF MID$(b$,2,2)="80" THEN newxx%=40:gosub 31000:l%(t%)=40:gosub 70:goto 1210
  107. 1116  IF VAL(MID$(b$,2,1))>4 THEN GOSUB 2400:GOTO 1200
  108. 1120  FOR v%=1 TO 4:IF d%(v%)=0 THEN GOTO 1124
  109. 1121  FOR x%=1 TO d%(v%):c$=STR$(p#(v%,x%)):IF MID$(c$,1,3)=MID$(b$,1,3) THEN GOTO 1140
  110. 1122  NEXT x%
  111. 1124  NEXT v%
  112. 1125  IF t%<4 THEN GOTO 1300
  113. 1127  IF VAL(MID$(b$,2,1))<5 AND c%(4)< 20*fininfo%(8*VAL(MID$(b$,6,2))) THEN 1170
  114. 1130  ?:? tab(8);"You have $";c%(t%):?
  115. 1131  PRINT TAB(8);"Want to buy":? tab(8);:gosub 200
  116. 1133  ? tab(8);"for $";20*fininfo%(8*val(mid$(b$,6,2)));:pena 2:? "?":pena maincolor%:gosub 1700:if x$="N" then goto 1200
  117. 1136  GOSUB 2800:GOTO 1200
  118. 1140  IF v%<>t% THEN 1148
  119. 1141  IF t%=4 THEN ?:?:PRINT  TAB(8);"You own it.":GOTO 1200
  120. 1142  ?:?:PRINT  TAB(8);:GOSUB 4080:pena 2:PRINT  " owns it.":GOTO 1200
  121. 1148  IF MID$(c$,8,1)<>"0" THEN GOTO 1150
  122. 1149  PRINT  TAB(8);"No rent!":y%=t%:t%=v%:PRINT  TAB(8);:GOSUB 4080:t%=y%:PRINT tab(8); "mortgaged the property.":GOTO 1200
  123. 1150  PRINT  TAB(14);"PAY RENT!";:SLEEP(10500)
  124. 1152  pena 25:PRINT tab(14); "PAY RENT!";:pena maincolor%:SLEEP(10500):IF q%=82 THEN ?:PRINT tab(14); "(DOUBLED)"
  125. 1154  PRINT  TAB(8);:GOTO 2600
  126. 1170  IF d%(4)=0 THEN GOTO 1198
  127. 1172  z%=c%(4):FOR w%=1 TO d%(4):c$=STR$(p#(4,w%)):IF MID$(c$,8,1)="1" OR MID$(c$,8,1)="2" THEN z%=z%+10*fininfo%(8*VAL(MID$(c$,6,2)))
  128. 1174  NEXT w%:IF z%<20*fininfo%(8*VAL(MID$(b$,6,2))) THEN GOTO 1198
  129. 1176  PRINT  TAB(8);"You can raise an ":PRINT  TAB(8);"additional $";z%-c%(4);"cash ":PRINT  TAB(8);"by mortgaging ":PRINT  TAB(8);"undeveloped land."
  130. 1178  PRINT  TAB(8);"Want to mortgage land":PRINT  TAB(8);"and buy?":GOSUB 1700
  131. 1179  IF x$="N" THEN PRINT  TAB(8);"Not a gambler, eh? OK...":GOTO 1200
  132. 1186  u%=1
  133. 1187  GOSUB 2700:IF c%(4)>=20*fininfo%(8*VAL(MID$(b$,6,2))) THEN GOTO 1130
  134. 1188  u%=u%+1:IF u%<=d%(4) THEN 1187
  135. 1198  PRINT  TAB(8);"You don't have the":PRINT  TAB(8);"money to buy.":GOSUB 2780
  136. 1200  IF d3%=1 THEN gosub 41000:GOSUB 20000:GOSUB 4080:PRINT  " had doubles":d3%=0:gosub 2780:GOTO 1000
  137. 1210  d3%=0:d%=0:t%=t%+1:IF t%=5 THEN t%=1